package top.drose;

//例题2.3寻找区间和
public class P40_1 {
    /**
     * 这个代码是有问题的（和书中的一样）19行会越界
     * 处理方法应该和{@link P41_1}一样
     * @param a 这个a应该初始化为一个大数组
     * @param n
     * @param s
     */
    static void findsum(int a[],int n,int s){
        var i=0;
        var j=0;
        int sum=a[0];
        while(j<n){
            if(sum>=s){//移动窗口左侧
                if(sum==a[s]){
                    System.out.printf("%d %d\n",i,j);
                }
                //窗口左侧向右移动一格
                sum-=a[i];
                i++;
                if(i>j){//在窗口左侧超过右侧时，等于j的值
                    sum=a[i];
                    j++;
                }
            }
            if(sum<s){
                j++;
                sum+=a[j];
            }
        }
    }

    public static void main(String[] args) {
        var arr=new int[]{6,1,2,3,4,6,4,2,8,9,10,11,12,13,14};
        findsum(arr,arr.length,6);
    }
}
